home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / utility2 / wclib.zip / WCLIBC.ZIP / WINCMD.H < prev    next >
C/C++ Source or Header  |  1993-04-15  |  9KB  |  329 lines

  1. //===========================================================
  2. // WINCMD.H -- Header File 
  3. // Copyright (c) 1993 Douglas Boling
  4. //===========================================================
  5. //-----------------------------------------------------------
  6. // Generic defines and data types
  7. //-----------------------------------------------------------
  8. #if !defined(WIN32)
  9.   #define WIN16     TRUE
  10.   #define WIN31
  11.  
  12.   #define INT       int
  13.   #define UINT      WORD
  14.   #define APIENTRY  PASCAL
  15.   #define WNDPROC   FARPROC
  16. #else
  17.   #define WIN16     FALSE
  18. #endif
  19.  
  20. struct decodeUINT {                         // structure associates
  21.     UINT Code;                              // messages 
  22.     LONG (*Fxn)(HWND, UINT, UINT, LONG);    // with a function
  23. }; 
  24. struct decodeCMD {                          // structure associates
  25.     UINT Code;                              // menu IDs with a 
  26.     LONG (*Fxn)(HWND, UINT, HWND, UINT);    // function
  27. };
  28. typedef struct find_t FIND_T;
  29. //
  30. // Function prototypes used by generic template
  31. //
  32. INT  APIENTRY WinMain(HANDLE, HANDLE, LPSTR, INT);
  33. INT  InitApp(HANDLE);
  34. INT  InitInstance(HANDLE, LPSTR, INT);
  35. INT  TermInstance(HANDLE, INT);
  36. LONG CALLBACK MainWndProc(HWND, UINT, UINT, LONG);
  37. BOOL CALLBACK HelpDlgProc (HWND, UINT, UINT, LONG);
  38. BOOL CALLBACK AboutDlgProc (HWND, UINT, UINT, LONG);
  39. INT  MyDisplayDialog (HINSTANCE, LPCSTR, HWND, WNDPROC, LPARAM);
  40. BOOL MyWritePrivateProfileInt (char *, char *, int, int, char *);
  41. //============================================================
  42. // Interpeter stuff
  43. //============================================================
  44. //
  45. // Var list structure
  46. //
  47. typedef struct {
  48.     PSTR        pszName;
  49.     BYTE        ucType;
  50.     BYTE        ucNameLen;
  51.     WORD        wData;
  52.     DWORD        dwData;
  53. } TOKEN;
  54. typedef TOKEN *PTOKEN;
  55. typedef TOKEN FAR *LPTOKEN;
  56. //
  57. // Used for line tokenization
  58. //
  59. typedef struct {
  60.     BYTE        ucLen;
  61.     BYTE        ucType;
  62.     PTOKEN    ptToken;
  63. } LINETOKEN;
  64. typedef LINETOKEN *PLINETOKEN;
  65. typedef LINETOKEN FAR *LPLINETOKEN;
  66.  
  67. typedef struct {
  68.     BYTE    ucLen;
  69.     BYTE    ucType;
  70.     UINT      wLineLen;
  71.     UINT      wLineNum;
  72. } LINESTARTTOK;
  73. typedef LINESTARTTOK *PLINESTARTTOK;
  74. typedef LINESTARTTOK FAR *LPLINESTARTTOK;
  75.  
  76. typedef struct {
  77.     BYTE    ucLen;
  78.     BYTE    ucType;
  79.     INT     sData;
  80. } VARSCONST;
  81. typedef VARSCONST *PVARSCONST;
  82. typedef VARSCONST FAR *LPVARSCONST;
  83.  
  84. typedef struct {
  85.     BYTE    ucLen;
  86.     BYTE    ucType;
  87.     LONG    lData;
  88. } VARLCONST;
  89. typedef VARLCONST *PVARLCONST;
  90. typedef VARLCONST FAR *LPVARLCONST;
  91.  
  92. typedef struct {
  93.     BYTE    ucLen;
  94.     BYTE    ucType;
  95.     char    szData[];
  96. } STRCONST;
  97. typedef STRCONST *PSTRCONST;
  98. typedef STRCONST FAR *LPSTRCONST;
  99. //
  100. // String Item structure
  101. //
  102. typedef struct {
  103.     WORD    wLen;
  104.     WORD    wLinkBack;
  105.     char    szStr[];
  106. } ITEM;
  107. typedef ITEM *PITEM;
  108.  
  109. typedef    INT (*STATEMENTFUNC) (LPLINETOKEN *, INT);
  110. typedef    INT (*OPFUNC) (LPLINETOKEN *, PTOKEN, PTOKEN);
  111. typedef    INT (*FUNCFUNC) (LPLINETOKEN *, PTOKEN);
  112. typedef    DWORD (CALLBACK CBTOKFUNC) (INT, LPTOKEN, LPSTR, BYTE, UINT, DWORD);
  113. typedef    CBTOKFUNC FAR *LPCBTOKFUNC;
  114.  
  115. typedef struct {
  116.     PSTR        pszName;
  117.     BYTE        ucType;
  118.     BYTE        ucNameLen;
  119.     WORD        wLevel;
  120.     STATEMENTFUNC    Fxn;
  121. } STATEMENTTOK;
  122. typedef STATEMENTTOK *PSTATEMENTTOK;
  123.  
  124. typedef struct {
  125.     PSTR        pszName;
  126.     BYTE        ucType;
  127.     BYTE        ucNameLen;
  128.     WORD        wLevel;
  129.     OPFUNC    Fxn;
  130. } OPTOK;
  131. typedef OPTOK *POPTOK;
  132. typedef struct {
  133.     PSTR        pszName;
  134.     BYTE        ucType;
  135.     BYTE        ucNameLen;
  136.     WORD        wData;
  137.     FUNCFUNC    Fxn;
  138. } FUNCTOK;
  139. typedef FUNCTOK *PFUNCTOK;
  140. //
  141. // Templates for prefefined tokens
  142. //
  143. typedef struct {
  144.     char    *szName;
  145.     BYTE    ucType;
  146.     BYTE    ucLevel;
  147.     OPFUNC    Fxn;
  148. } LOCALOP;
  149. typedef LOCALOP *PLOCALOP;
  150.  
  151. typedef struct {
  152.     char        *szName;
  153.     BYTE        ucType;
  154.     FUNCFUNC    Fxn;
  155. } LOCALFUNC;
  156. typedef LOCALFUNC *PLOCALFUNC;
  157.  
  158. typedef struct {
  159.     char        *szName;
  160.     BYTE        ucType;
  161.     STATEMENTFUNC    Fxn;
  162. } LOCALSTATEMENT;
  163. typedef LOCALSTATEMENT *PLOCALSTATEMENT;
  164. //
  165. // Entry point defines for external function libs
  166. //
  167. typedef INT (CALLBACK LIBLOAD) (HWND, INT, INT);
  168. typedef LIBLOAD FAR *LPLIBLOAD;
  169. typedef INT (CALLBACK LIBRESET) (INT, FARPROC);
  170. typedef LIBRESET FAR *LPLIBRESET;
  171. typedef INT (CALLBACK LIBFUNC) (LPLINETOKEN *, LPTOKEN, UINT, FARPROC, HWND);
  172. typedef LIBFUNC FAR *LPLIBFUNC;
  173. typedef INT (CALLBACK LIBGETERR) (INT, LPSTR, INT);
  174. typedef LIBGETERR FAR *LPLIBGETERR;
  175. typedef INT (CALLBACK LIBGETVER) (LPWORD, LPSTR, INT);
  176. typedef LIBGETVER FAR *LPLIBGETVER;
  177. typedef INT (CALLBACK LIBGETHELP) (INT, LPSTR, INT);
  178. typedef LIBGETERR FAR *LPLIBGETHELP;
  179.  
  180. //
  181. // Profile String Names
  182. //
  183. #define     PRO_XPOS     "WinPosX"
  184. #define     PRO_YPOS     "WinPosY"
  185. #define     PRO_XSIZE    "WinSizeX"
  186. #define     PRO_YSIZE    "WinSizeY"
  187. //
  188. // Resource Idendifiers
  189. //
  190. #define     IDM_OPEN       101
  191. #define     IDM_REOPEN     102
  192. #define     IDM_LOAD       103
  193. #define     IDM_EXIT       104
  194. #define     IDM_SHOWLIST   200
  195. #define     IDM_SHOWOUT    201
  196. #define     IDM_CLEAROUT   202
  197. #define     IDM_MINONRUN   203
  198. #define     IDM_HELP       300
  199. #define     IDM_ABOUT      301
  200.  
  201. #define     IDD_LINELIST   600
  202. #define     IDD_OUTLIST    601
  203. #define     IDD_TOKLINE    602
  204. #define     IDD_RUN        603
  205. #define     IDD_STEP       604
  206. #define     IDD_RESET      605
  207.  
  208. #define     IDD_ASKTEXT    700
  209. #define     IDD_ASKANS     701
  210. #define     IDD_HELPLIST   710
  211. #define     IDD_PROGSTR    720
  212. //
  213. // User defined Messages
  214. //
  215. #define     MYMSG_REFRESH  (WM_USER+1)
  216. //
  217. // Interpeter constants
  218. //
  219. #define    WAITTIMER_ID             1
  220.  
  221. #define    MYTRUE                   1
  222. #define    MYFALSE                  0
  223.  
  224. #define    FUNC_SKIP                1
  225. #define    FUNC_EXECUTE             2
  226.                                   
  227. #define    RC_END_OF_PROGRAM        1
  228. #define    RC_END_OF_SUB            2
  229. #define    RC_END_OF_LOOP           3
  230. #define    RC_END_OF_BLOCK          4
  231.  
  232. #define    ERR_SYNTAX              -1
  233. #define    ERR_EXPECTED_NUMBER     -2
  234. #define    ERR_DIVIDE_BY_ZERO      -3
  235. #define    ERR_UNEXP_EOL           -4
  236. #define    ERR_ILLEGAL_ASSIGNMENT  -5
  237. #define    ERR_NO_END_QUOTE        -6
  238. #define    ERR_EXTRA_CHARS         -7
  239. #define    ERR_NO_CLOSE_PAREN      -8
  240. #define    ERR_NO_OPEN_PAREN       -9
  241. #define    ERR_UNKNOWN_OP          -10
  242. #define    ERR_MULTI_DEF_LABEL     -11
  243. #define    ERR_12                  -12
  244. #define    ERR_RETURN_OUTSIDE_FUNC -13
  245. #define    ERR_END_WITHOUT_DO      -14
  246. #define    ERR_NOARGS              -15
  247. #define    ERR_BAD_SENDKEY_STR     -16
  248.  
  249. #define    ERR_NO_TOKEN_SPACE      -17
  250. #define    ERR_OUT_OF_MEMORY       -18
  251. #define    ERR_FILE_TOO_BIG        -19
  252. #define    ERR_CANNOT_OPEN_FILE    -20
  253. #define    ERR_LINE_TOO_LONG       -21
  254. #define    ERR_UNEXP_PROGTERM      -22
  255. #define    ERR_UNKNOWN_CMDSWITCH   -23
  256. #define    ERR_PARSE_UNKSYMBOL     -24
  257. #define    ERR_NAME_TOO_LONG       -25
  258. #define    ERR_MEM_LOCK            -26
  259. #define    ERR_NO_TIMERS           -27
  260. #define    ERR_OVERFLOW            -28
  261. #define    ERR_FILE_TOO_COMPLEX    -29
  262. #define    ERR_BAD_LIB_LOAD        -30
  263. #define    ERR_FUNC_NOT_FOUND      -31
  264.  
  265. // Error nums: -32 to -63 are Windows launch error codes
  266. #define    ERR_LAUNCH_ERR          -32
  267. // Error nums: -64 to -249 are file open error codes
  268. #define    ERR_FOPEN_ERR           -63 //Err codes start at 1
  269. #define    ERR_FILE_NOT_FOUND      -65
  270. #define    ERR_PATH_NOT_FOUND      -66
  271. #define    ERR_INVALID_DRIVE       -78
  272.  
  273. #define    ERR_BAD_FUNC_NAME       -256
  274. #define    ERR_BAD_FUNC            -257
  275. #define    ERR_TOO_FEW_PARMS       -258
  276. #define    ERR_LIBERROR_START      -2048
  277. #define    WCH                      2048     //This number should match LibErrStart
  278.  
  279. // 1 - 31 Line token types
  280. #define    TTYPE_LINE                1
  281. #define    TTYPE_CMT2EOL             2
  282. #define    TTYPE_CMTSTART            3
  283. #define    TTYPE_CMTEND              4
  284. #define    TTYPE_SCONST              5
  285. #define    TTYPE_LCONST              6
  286. #define    TTYPE_STRCONST            7
  287. #define    TTYPE_VAR                 8
  288. // 32 - 63 Var token types
  289. #define    TTYPE_VARSTART           32
  290. #define    TTYPE_NUM                32
  291. #define    TTYPE_STR                33
  292. #define    TTYPE_LABEL              35
  293. #define    TTYPE_RETVAL             36
  294. #define    TTYPE_VAREND             63
  295. // 64 - 95 operator token types
  296. #define    TTYPE_OPSTART            64
  297. #define    TTYPE_LOP                64
  298. #define    TTYPE_LUOP               65
  299. #define    TTYPE_LOCALFUNC          66
  300. #define    TTYPE_OPAREN             67
  301. #define    TTYPE_CPAREN             68
  302. #define    TTYPE_ASSIGN_CMP         69
  303. #define    TTYPE_ASSIGN             70
  304. #define    TTYPE_BREAK              71
  305. #define    TTYPE_INTCMD             72
  306. #define    TTYPE_LIBFUNC            73
  307. #define    TTYPE_OPEND              95
  308. // 96 - 127 statement token types
  309. #define    TTYPE_STATEMENTSTART     96
  310. #define    TTYPE_LSTATEMENT         96
  311. #define    TTYPE_THENELSE           97
  312. #define    TTYPE_BEGBLK             98
  313. #define    TTYPE_ENDBLK             99
  314. #define    TTYPE_BEGCALL           100
  315. #define    TTYPE_STATEMENTEND      127
  316. // 128 - program stuff
  317. #define    TTYPE_EOL               128
  318. #define    TTYPE_EOF               129
  319. #define    TTYPE_DEL               255
  320.  
  321. // Callback function ID numbers                                    
  322. #define    CBF_ADDTOKEN              1
  323. #define    CBF_FINDTOKEN             2
  324. #define    CBF_SETTOKEN              3
  325. #define    CBF_GETTOKENVAL           4
  326. #define    CBF_GETTOKENSTRING        5
  327. #define    CBF_RESOLVELINE           6
  328.  
  329.